# Scrapy

# 官网：https://scrapy.org/
# 文档：https://docs.scrapy.org/en/latest/index.html

# Scrapy是一个Python框架，用于抓取网站数据并从HTML或XML文档中提取结构化的数据。
# 它可以用于数据挖掘、数据分析、监控和自动化。

# Scrapy的主要特点是：
# 1. 简单：Scrapy的设计目标就是让使用者只需要关注数据抓取的核心逻辑，而不需要关注其他的功能，因此Scrapy的使用非常简单。
# 2. 灵活：Scrapy可以灵活地处理复杂的网页结构，并提供多种方式来提取数据。
# 3. 高效：Scrapy的性能非常高，可以处理大量的网页，并在短时间内完成任务。
# 4. 可扩展：Scrapy提供了插件机制，可以轻松地扩展功能。
# 5. 社区活跃：Scrapy的社区活跃，是其他Python框架不可比拟的。

# Scrapy的主要组件包括：
# 1. Spider：爬虫，用于抓取网站数据。
# 2. Item：数据模型，用于存储抓取的数据。
# 3. Downloader：下载器，用于下载网页。
# 4. Pipeline：管道，用于处理爬取的数据。
# 5. Scheduler：调度器，用于管理Spider的执行。
# 6. Settings：设置，用于配置Scrapy的运行环境。
# 7. Shell：Scrapy的交互式命令行。
# 8. Web UI：Scrapy的图形用户界面。
# 9. Extensions：Scrapy的插件机制。
# 10. Core：Scrapy的核心组件。
# 11. Documentation：Scrapy的文档。
# 12. Community：Scrapy的社区。

# 安装
# pip3 install scrapy

# 第一个Scrapy项目
# 1. 创建一个新的Scrapy项目：scrapy startproject myproject
# 2. 进入项目目录：cd myproject
# 3. 创建一个Spider：scrapy genspider test https://www.zongheng.com/
# 4. 运行Spider：scrapy crawl example

# 第一个Spider
# 1. 打开myproject/spiders/test.py文件，编辑内容如下：

# import scrapy
#
# class TestSpider(scrapy.Spider):
#     name = 'test'
#     start_urls = ['https://www.zongheng.com/']
#
#     def parse(self, response):
#         for title in response.css('title::text'):
#             yield {'title': title.get()}

# 2. 运行命令：scrapy crawl test
# 3. 打开Scrapy的日志文件：scrapy.log
# 4. 打开Scrapy的输出文件：output.json

# 第一个Spider的解析规则：
# 1. 选择器：response.css('title::text')
# 2. 解析规则：yield {'title': title.get()}
# 3. 输出规则：将解析结果输出到Scrapy的输出文件output.json中。